package com.ruoyi.classify.mapper;

import java.util.List;
import com.ruoyi.classify.domain.HsContentTag;
import io.lettuce.core.dynamic.annotation.Param;

/**
 * 内容标签关联Mapper接口
 * 
 * @author lzk
 * @date 2025-06-17
 */
public interface HsContentTagMapper 
{
    /**
     * 查询内容标签关联
     * 
     * @param id 内容标签关联主键
     * @return 内容标签关联
     */
    public HsContentTag selectHsContentTagById(Long id);

    /**
     * 查询内容标签关联列表
     * 
     * @param hsContentTag 内容标签关联
     * @return 内容标签关联集合
     */
    public List<HsContentTag> selectHsContentTagList(HsContentTag hsContentTag);

    /**
     * 新增内容标签关联
     * 
     * @param hsContentTag 内容标签关联
     * @return 结果
     */
    public int insertHsContentTag(HsContentTag hsContentTag);

    /**
     * 修改内容标签关联
     * 
     * @param hsContentTag 内容标签关联
     * @return 结果
     */
    public int updateHsContentTag(HsContentTag hsContentTag);

    /**
     * 删除内容标签关联
     * 
     * @param id 内容标签关联主键
     * @return 结果
     */
    public int deleteHsContentTagById(Long id);

    /**
     * 批量删除内容标签关联
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteHsContentTagByIds(Long[] ids);

    /**
     * 查询所有已存在的topic_id
     * @return topic_id列表
     */
    List<Long> selectAllTopicIds();

    /**
     * 查询有null标签的topic_id
     * @return topic_id列表
     */
    List<Long> selectTopicIdsWithNullTags();

    /**
     * 根据主题ID删除未认证的标签关联
     * @param topicId 主题ID
     * @return 结果
     */
    int deleteUnverifiedByTopicId(Long topicId);

    /**
     * 根据主题ID查询已认证的标签关联
     * @param topicId 主题ID
     * @return 已认证的标签关联列表
     */
    List<HsContentTag> selectVerifiedByTopicId(Long topicId);

    /**
     * 批量插入标签关联
     * @param contentTags 标签关联列表
     * @return 结果
     */
    int batchInsert(List<HsContentTag> contentTags);

    /**
     * 根据已验证的标签ID列表查询主题ID列表
     *
     * @param tagIds 标签ID列表
     * @return 主题ID列表
     */
    public List<Long> selectTopicIdsByTagIds(List<Long> tagIds);

    /**
     * 批量更新验证状态
     * @param ids ID列表
     * @param isVerified 验证状态 (0: 未验证, 1: 已验证)
     * @return 影响行数
     */
    int batchUpdateVerify(@Param("ids") List<Long> ids, @Param("isVerified") int isVerified);

}
